<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
</head>

<body>
  <script>
    /*
      描述
        找出元素 item 在给定数组 arr 中的位置
      输出描述：
        如果数组中存在 item，则返回元素在数组中的位置，否则返回 -1

      示例
        indexOf([ 1, 2, 3, 4 ], 3) // 返回 2
        没有找到返回-1
      要求：不能用arr.indexOf(item)
      */



    // 查找数组元素位置
    // 完成此函数
    function indexOf(arr, item) {
      // 你的代码
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] === item) {
          return i
        }

      }
      return -1
    }


    function indexOf1(arr, item) {
      return arr.reduce(function (a, b, index) {
        return b === item ? index : a
      }, -1)
    }

    function indexOf2(arr, item) {
      return arr.findIndex(function (n) {
        return n === item
      })
    }

    function indexOf(arr, item) {
      let index = -1
      arr.forEach((n, i) => {
        if (item === n && index === -1) {
          index = i
        }
      })
      return index
    }
    console.log(indexOf2([1, 2, 3, 4], 5))
    console.log(indexOf1([1, 2, 3, 4], 3)) // 返回2

    /*
      描述
      合并数组 arr1 和数组 arr2。不要直接修改数组 arr，结果返回新的数组
      concat([1, 2, 3, 4], ['a', 'b', 'c', 1])
      返回 [1, 2, 3, 4, 'a', 'b', 'c', 1]
      要求不能用arr1.concat(arr2)
    */

    function concat(arr1, arr2) {
      //  你的代码
      return [...arr1, ...arr2]
    }

    function concat(arr1, arr2) {
      //  你的代码
      let ree = []
      for (let i = 0; i < arr2.length; i++) {
        ree.push(arr2[i])
      }
      for (let z = 0; z < arr1.length; z++) {
        ree.push(arr1[z])
      }
    }

    console.log(concat([1, 2, 3, 4], ['a', 'b', 'c', 1]))

    /*
      描述
      实现 fizzBuzz 函数，参数 num 与返回值的关系如下：
      1、如果 num 能同时被 3 和 5 整除，返回字符串 fizzbuzz
      2、如果 num 能被 3 整除，返回字符串 fizz
      3、如果 num 能被 5 整除，返回字符串 buzz
      4、如果参数为空或者不是 Number 类型，返回 false
      5、其余情况，返回参数 num

      fizzBuzz(15) // fizzbuzz
      */
    // function fizzBuzz(num) {
    //   // 你的代码

    //   if (num % 3 === 0 && num % 5 == 0) {
    //     return 'fizzbuzz'
    //   }
    //   if (num % 3 === 0 && num % 5 !== 0) {
    //     return 'fizz'
    //   }
    //   if (num % 3 !== 0 && num % 5 === 0) {
    //     return 'buzz'
    //   }
    //   if (num === null || typeof (num) !== "number") {
    //     return false
    //   } else {
    //     return num
    //   }
    // }

    function fizzBuzz(num) {
      switch (true) {
        case (num % 3 === 0 && num % 5 == 0): return 'fizzbuzz'
        case (num % 3 === 0 && num % 5 !== 0): return 'fizz'
        case (num % 3 !== 0 && num % 5 === 0): return 'buzz'
        case (num === undefined || isNaN(num)): return false
        default: return num
      }
    }
    console.log(fizzBuzz(15)) // fizzbuzz
    console.log(fizzBuzz(6)) // fizzbuzz
    console.log(fizzBuzz(10)) // fizzbuzz
    console.log(fizzBuzz()) // fizzbuzz
    console.log(fizzBuzz(22)) // fizzbuzz

  </script>
</body>

</html>